/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.flowumi.controladores.admin;

import com.flowumi.controladores.SessionFlowumiUtilBean;
import com.flowumi.entity.Roles;
import com.flowumi.entity.Usuarios;
import com.flowumi.exceptions.UsuarioNoCreadoException;
import com.flowumi.facade.AdminFacade;
import java.io.IOException;
import java.io.Serializable;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author ideacentre
 */
@ManagedBean
@RequestScoped
public class AdminAgregarUsuariosBean implements Serializable{
    private static final org.apache.log4j.Logger LOGGER =
            org.apache.log4j.Logger.getLogger(AdminAgregarUsuariosBean.class);
    @EJB
    AdminFacade adminFacade;
    
    private List<Roles> roles;
    private Usuarios usuario;
    private int idRol;
    
    @ManagedProperty("#{sessionFlowumiUtil}")
    private SessionFlowumiUtilBean sessionBean;

    public void setSessionBean(SessionFlowumiUtilBean sessionBean) {
        this.sessionBean = sessionBean;
    }
    
    
    
    public AdminAgregarUsuariosBean(){
        FacesContext.getCurrentInstance().getExternalContext().getSession(true);
    }
    
    @PostConstruct
    public void init(){
        if(sessionBean.getUsuario().getIdRol()==null||sessionBean.getUsuario().getIdRol().getIdRol()!=1){
            try {
                sessionBean.Desconectar();
                FacesContext.getCurrentInstance().getExternalContext().redirect("InicioSession.xhtml");
            } catch (IOException ex) {
                LOGGER.error(ex);
            }
        }
        roles = adminFacade.getListaRolles();
        usuario = new Usuarios();
    }

    public List<Roles> getRoles() {
        return roles;
    }

    public void setRoles(List<Roles> roles) {
        this.roles = roles;
    }

    public Usuarios getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuarios usuario) {
        this.usuario = usuario;
    }

    public int getIdRol() {
        return idRol;
    }

    public void setIdRol(int idRol) {
        this.idRol = idRol;
    }

    public String crear(){
        try {
            LOGGER.info("Inicio creacion usuario");
            Roles rol = null;
            for(Roles r : roles){
                if(r.getIdRol() == idRol){
                    rol = r;
                }
            }
            usuario.setIdRol(rol);
            adminFacade.crearUsuario(usuario);
            LOGGER.info("Usuario creado");
            return "/faces/pages/AdminListaUsuarios.xhtml";
        } catch (UsuarioNoCreadoException ex) {
            LOGGER.error(ex);
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Usuario no creado", ex.getMessage()));
        }
        return "";
    }
}
